package com.ruoyi.project.rostering.service.impl;

import java.util.List;

import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.project.rostering.mapper.RosteringMapper;
import com.ruoyi.project.rostering.domain.Rostering;
import com.ruoyi.project.rostering.service.IRosteringService;

/**
 * 排班管理Service业务层处理
 * 
 * @author zhf
 * @date 2022-11-05
 */
@Service
public class RosteringServiceImpl implements IRosteringService 
{
    @Autowired
    private RosteringMapper rosteringMapper;

    /**
     * 查询排班管理
     * 
     * @param id 排班管理主键
     * @return 排班管理
     */
    @Override
    public Rostering selectRosteringById(Long id)
    {
        return rosteringMapper.selectRosteringById(id);
    }

    /**
     * 查询排班管理列表
     * 
     * @param rostering 排班管理
     * @return 排班管理
     */
    @Override
    public List<Rostering> selectRosteringList(Rostering rostering)
    {
        return rosteringMapper.selectRosteringList(rostering);
    }

    /**
     * 新增排班管理
     * 
     * @param rostering 排班管理
     * @return 结果
     */
    @Override
    public int insertRostering(Rostering rostering)
    {
        Rostering rostering1 = new Rostering();
        rostering1.setDate(rostering.getDate());
        rostering1.setShift(rostering.getShift());
        List<Rostering> list = rosteringMapper.selectRosteringList(rostering1);
        if(list.size() > 0) {
            throw new BaseException("当前日期班次已存在");
        }
        Rostering rostering2 = new Rostering();
        rostering2.setDate(rostering.getDate());
        rostering2.setGroupId(rostering.getGroupId());
        List<Rostering> list2 = rosteringMapper.selectRosteringList(rostering2);
        if(list2.size() >= 2) {
            throw new BaseException("同一个组一天最多排两班");
        }
        rostering.setCreateTime(DateUtils.getNowDate());
        return rosteringMapper.insertRostering(rostering);
    }

    /**
     * 修改排班管理
     * 
     * @param rostering 排班管理
     * @return 结果
     */
    @Override
    public int updateRostering(Rostering rostering)
    {
        rostering.setUpdateTime(DateUtils.getNowDate());
        return rosteringMapper.updateRostering(rostering);
    }

    /**
     * 批量删除排班管理
     * 
     * @param ids 需要删除的排班管理主键
     * @return 结果
     */
    @Override
    public int deleteRosteringByIds(Long[] ids)
    {
        return rosteringMapper.deleteRosteringByIds(ids);
    }

    /**
     * 删除排班管理信息
     * 
     * @param id 排班管理主键
     * @return 结果
     */
    @Override
    public int deleteRosteringById(Long id)
    {
        return rosteringMapper.deleteRosteringById(id);
    }
}
